package com.bkgy.modularbx.processrule.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 工艺规则更新DTO
 *
 * @author trae
 */
@Data
@Schema(description = "工艺规则更新参数")
public class ProcessRuleLibraryUpdateDto {

    /**
     * 工艺规则库变量名，用于唯一标识工艺规则
     * 必填字段，作为更新操作的主键
     */
    @NotNull(message = "工艺规则库变量名不能为空")
    @Schema(description = "工艺规则库变量名", required = true)
    private String processRuleVariable;

    /**
     * 产线编号，用于标识不同的生产线
     * 可选字段，用于关联特定的生产线
     */
    @Schema(description = "产线")
    private String productionLine;

    /**
     * 区域代码，用于标识生产线中的特定区域
     * 可选字段，用于定位具体的生产区域
     */
    @Schema(description = "区域代码")
    private String areaCode;

    /**
     * 设备代码，用于标识具体的设备
     * 可选字段，用于关联到特定的设备
     */
    @Schema(description = "设备代码")
    private String deviceCode;

    /**
     * 变量描述，用于详细说明该工艺规则的用途和含义
     * 可选字段，提供对工艺规则的补充说明
     */
    @Schema(description = "变量描述")
    private String variableDescription;

    /**
     * 阈值，用于设定工艺规则的判断标准
     * 可选字段，指定规则的临界值
     */
    @Schema(description = "阈值")
    private BigDecimal thresholdValue;

    /**
     * 阈值单位，用于说明阈值的计量单位
     * 可选字段，指定阈值的度量单位
     */
    @Schema(description = "阈值单位")
    private String thresholdUnit;

    /**
     * 报警等级，用于标识规则触发时的严重程度
     * 可选字段，数值越大表示等级越高
     */
    @Schema(description = "报警等级")
    private Integer warningGrade;

    /**
     * 监控周期，用于设定规则检查的时间间隔
     * 可选字段，指定规则执行的频率
     */
    @Schema(description = "监控周期")
    private String monitoringCycle;

    /**
     * 数据类型，指定变量的数据类型
     * 可选字段，支持int、float、double等类型
     */
    @Schema(description = "数据类型，int，float，double")
    private String datatype;

    /**
     * 创建时间
     */
    private Date toc;

    /**
     * 修改时间
     */
    private Date tom;
}